package pro11_20.pro17;

/**
 * @author yaohuaiying
 * @create 2018-02-22 9:43
 *
 * 第17题（字符串）：
题目：在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff，则输出b。
分析：这道题是2006年google的一道笔试题。

思路：
按照我们的常识自己思考下
首先字符串实质上是数组
数组就可以循环
那么就是怎么对比 出现的次数 和 第一个出现 的问题了
肯定是放在某个地方然后对比 记录出现的次数
其实这样很类似于那个腾讯的给一排数字 第二排是数字出现的次数
abaccdeff
abcdef
212112
这样感觉不太好 比较的时候还是要嵌套循环
改进一下用hash码来计数就行了 不要自己用来给每个字符统计是否相同就行了
 **/
public class Main {

    public static void main(String[] args){
        String source = "qwerqaa";
        char[] souces = source.toCharArray();
        //这里针对小写26字母
        int[] hash = new int[26];
        for(int i : hash){
            i = 0;
        }
        for(char a : souces){
            hash[a-'a'] = hash[a-'a'] + 1;
        }
        for(int i=0 ; i<hash.length; i++){
            if(hash[i] == 1){
                System.out.println((char)(97 + i));
                break;
            }
        }
    }
}
